/**
 * $Author: francesco.benincasa $
 * $Date: 2007-02-16 14:50:42 +0100 (ven, 16 feb 2007) $
 * $Rev: 472 $
 */
package org.stars.database;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

/**
 * Wrapper of connection pool.
 * 
 * @author Francesco Benincasa
 *
 */
public interface ConnectionPool
{ 
	/**
	 * setter dell'attributo name del connection pool
	 * @param value
	 */
	public void		setName(String value);
	
	/**
	 * getter dell'attributo name del connection pool
	 * @return
	 * 	name
	 */
	public String	getName();
	
    /**
     * metodo che restituisce una connessione recuperata dal connection pool.
     * 
     * @return
     * 	connection
     * @throws SQLException
     */
    public Connection getConnection() throws SQLException;
    
    
    /**
     * restituisce delle informazioni relative al connection pool
     * 
     * @return
     * 		stringa contenente alcune informazioni sul connection pool
     */
    public String	getInfo();
    
    /**
     * Indica se il connection pool e' tracciabile
     * @return
     */
    public boolean isTraceable();
    
    /**
     * Imposta il valore della tracciabilita' del connection pool.
     * @param value
     */
    public void setTraceable(boolean value);
    
    /**
     * Indica se ci sono connessioni aperte
     * 
     * @return
     */
    public boolean hasOpenedConnections();
    
    /**
     * Elenco delle connessioni aperte. Per ogni connessione è presente lo stack trace.
     * 
     * @return
     */
    public Map<String, List<String>> getOpenedConnectionDetails();
    
}